#include<stdio.h>
/*
											calloc函数
函数概要：
		calloc 是 C 语言中用于动态内存分配的一个标准库函数，主要作用是分配一块指定大小的连续内存，并将分配的内存区域全部初始化为零。
		它的核心功能是同时完成内存分配和初始化，确保分配的内存内容为空（即每个字节为零），这在许多场景下非常有用，尤其是在需要零初始化的内存时
		也就是calloc函数 == malloc+memset组合而成

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

函数原型：
		#include <stdlib.h>
		...
		void *calloc(size_t nmemb, size_t size);

参数解析：
		size_t nmenb:要申请的内存单元个数。
		size_t: 每个单元的大小(以字节为单位)

返回值：
		返回一个指向分配内存区域的指针,该指针为void类型，需要根据具体类型进行强制转化。
		如果分配失败，返回NULL

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

主要功能：
		1.动态分配内存：类似于 malloc，用于在运行时分配一块内存。
		
		2.内存初始化为零：分配的内存区域会被自动初始化为零，即每个字节的值均为 0。(这一点是  calloc 与 malloc 的主要区别：malloc 同样分配内存，但不会初始化，内存中可能包含未定义的值（垃圾值）。)

		3.线程安全性：calloc 是线程安全的，它可以确保在多线程环境下正确操作共享内存区域。

----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

*/

//示例1，初始化整型数组
#include<stdlib.h>
#include<string.h>

int main()
{
	int* ptr = (int*)calloc(5, sizeof(int));

	if (ptr == NULL)
	{
		printf("Memory allocation failed\n");
		exit(1);
	}

	// 输出数组内容，验证是否初始化为 0
	for (int i = 0; i < 5; i++) {
		printf("%d ", ptr[i]);
	}
	printf("\n");

	free(ptr);
	return 0;

	return 0;
}